EventBridge Schedulerでインスタンスを平日12~16時に起動するよう設定してみた
はじめに
今回はEventBridge SchedulerでEC2を平日12時に起動、16時に停止する構成を作成しました。これにより、不必要な時間帯の停止し忘れによる料金発生を抑えることができます。以下、その手順を記述していきます。
前提条件
- 起動と停止時刻を設定したいEC2を起動済み
- インスタンスIDを控えてある
IAMロールとポリシー作成
1.IAMの「ポリシーを作成」からJSONタブを開き、インスタンスの起動と停止を許可する以下のポリシーを記述します。ポリシー名を記入してポリシーを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:リージョン:アカウントID:instance/インスタンスID"
}
]
}
2.「ロールを作成」から、「信頼するエンティティの選択」画面で、「カスタム信頼ポリシー」を選択します。EventBridge Schedulerにこのロールの権限を与える以下のポリシーを記述します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
3.「許可を追加」で先ほど作成したポリシーを検索し(例:ec2-stop-start-policy)、選択します。ロール名を記入しロールを作成します。
EventBridge Scheduler作成
起動スケジュール
1.EventBridgeの「スケジュール」→「スケジュールを作成」を選択しスケジュール名を記入します。
2.「スケジュールのパターン」を以下のように設定します。
- 頻度:定期的なスケジュール
- タイムゾーン:Asia/Tokyo
- スケジュールの種類:cron ベースのスケジュール
- cron式
分 | 時間 | 日付 | 月 | 曜日 | 年 |
---|---|---|---|---|---|
0 | 12 | ? | * | MON-FRI | * |
- フレックスタイムウィンドウ:5分
3.「ターゲットの選択」で「すべてのAPI」を選択し、検索ボックスから「EC2」を検索→「Amazon EC2」を選択し、続けて検索ボックスから「StartInstances」を検索し、選択する。
4.「StartInstances」に下図のようにインスタンスIDを記入する。
5.「設定」では「スケジュール完了後のアクション」を「NONE」に設定し、「アクセス許可」では先ほど作成したロールを選択します。
停止スケジュール
起動スケジュールと同様に作成を行います。
1.「スケジュールのパターン」のcron式は以下のように設定します。
分 | 時間 | 日付 | 月 | 曜日 | 年 |
---|---|---|---|---|---|
0 | 16 | ? | * | MON-FRI | * |
2.「ターゲットの選択」では「EC2」から「Stop Instance」を選択します。
動作確認
作成後、CloudTrailから設定した時間(平日12時と16時)にインスタンスの起動と停止が正常に行われているか、記録を確認します。
参考
おわりに
今回の検証でうっかりEC2の停止を忘れてしまった場合でも自動で停止して料金を抑えることができ、簡易的な仕組みで解決!を実践できました。ご覧いただきありがとうございました。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。